home *** CD-ROM | disk | FTP | other *** search
/ Tiger Disk 6 / Tiger_Disk_006_19xx_Tiger-Crew-Disk_de_Side_B.d64 / 3 mk (.txt) < prev    next >
Commodore BASIC  |  2023-02-26  |  7KB  |  160 lines

  1. 8 clr:restore
  2. 10 u$="[197][197][197][197][197][197][197][197][197]":o$="[164][164][164][164][164][164][164][164][164]":a$="adressierung":b$="beispiel: "
  3. 20 print"[147][164][164]";o$;o$;o$;o$:print"syntax-lehrgang 'maschinensprache' (3)"
  4. 30 print"[164][164][164][164][164]";o$;o$;o$:print"1.2.3. die ";a$;"smethoden[146]"
  5. 40 print"die genaue kenntnis   der verschiedenen"
  6. 50 printa$;"smethoden ist fuer den pro-"
  7. 60 print"grammierer von groesster bedeutung."
  8. 70 print"soweit moeglich  werden wir in den bei-"
  9. 80 print"spielen den befehl 'lda' verwenden."
  10. 90 print"'lda' ist die englische abkuerzung fuer"
  11. 100 print"'load accumulator'.":print" [163][160][160][163][160][163]"
  12. 120 i=1:gosub5000:ifflthen20
  13. 200 print"[147]der befehl 'lda' bewirkt folgendes: die"
  14. 210 print"cpu laed ein datenwort (byte) in den ac"
  15. 220 print"es  gibt  verschiedene  moeglichkeiten,"
  16. 230 print"wie die cpu dies tun soll,  bzw.  woher"
  17. 240 print"sie das byte holen soll."
  18. 250 print"in diesem  abschnitt  lernen wir  diese"
  19. 260 print"unterschiede kennen."
  20. 270 print"bei den ";a$;"en behalten wir die"
  21. 280 print"englischen bezeichnungen bei.  das stu-"
  22. 290 print"dium[160] weiterfuehrender  literatur  wird"
  23. 300 print"dadurch erleichtert."
  24. 310 i=2:gosub5000:ifflthen20
  25. 400 print"[147][164][164]";o$;o$;o$:print"1.2.3.1. implied-";a$;"[146]"
  26. 410 print"'implied' sind alle 1-byte-befehle. ih-"
  27. 420 print"nen folgt weder ein datenwort noch eine"
  28. 430 print"adresse.  das zu bearbeitende datenwort"
  29. 440 print"ergibt sich aus dem befehl."
  30. 450 printb$;" der befehl,  den ihnhalt des":printu$
  31. 460 print"accumulators um 1 zu erhoehen."
  32. 510 i=3:gosub5000:ifflthen200
  33. 600 print"[147][164][164][164][164]";o$;o$;o$:print"1.2.3.2. immediate-";a$;"[146]"
  34. 610 print"'immediate' sind befehle, bei denen das"
  35. 620 print"zu bearbeitende byte dem befehl  direkt"
  36. 630 print"folgt.  befehle mit dieser ";a$
  37. 640 print"sind daher stets 2-byte-befehle."
  38. 650 print"wir  schreiben  hinter  den  befehl das"
  39. 660 print"zeichen '#', gefolgt von dem datenwort."
  40. 690 printb$;"der befehl, in den ac das da-":printu$
  41. 700 print"tenwort $00 zu laden: 'lda # $00'.  der"
  42. 710 print"hexadezimale code fuer 'lda #' ist $a9."
  43. 720 print"im programmspeicher steht also $a9 $00."
  44. 740 i=4:gosub5000:ifflthen400
  45. 800 print"[147][164][164][164]";o$;o$;o$:print"1.2.3.3. absolute-";a$;"[146]"
  46. 810 print"'absolute' sind befehle,  bei denen die"
  47. 820 print"adresse des zu bearbeitenden bytes  dem"
  48. 830 print"befehlsbyte folgt.  da adressen stets 2"
  49. 840 print"byte umfassen,  ist die befehlslaenge 3":print"byte.
  50. 850 [153]"die 2 adressbytes  sind dem befehlsbyte"
  51. 860 [153]"nachgestellt. zuerst das hoeherwertige,"
  52. 890 [153]"dann das niederwertige byte."
  53. 910 i[178]5:[141]5000:[139]fl[167]600
  54. 1000 [153]"load";b$;"das im speicher $0123 stehen-":[153]u$
  55. 1010 [153]"de byte  soll in den ac geladen werden:"
  56. 1020 [153]"'lda $0123'. der hexadezimale code fuer"
  57. 1030 [153]"den befehl 'lda, absolute' ist $ad.  im"
  58. 1040 [153]"programmspeicher  sieht der befehl dann"
  59. 1050 [153]"so aus: '$ad $23 $01'. beachten sie die"
  60. 1060 [153]"reihenfolge der zwei adressbytes !"
  61. 1110 i[178]6:[141]5000:[139]fl[167]800
  62. 1200 [153]"loadtototo";o$;o$;o$:[153]"1.2.3.4. zeropage-";a$;"wait"
  63. 1210 [153]"'zeropage' sind befehle,  bei denen dem"
  64. 1220 [153]"zu bearbeitenden befehl  eine zeropage-":[153][163]30);u$
  65. 1230 [153]"-adresse  folgt, d.h. das hoeherwertige":[153]u$
  66. 1240 [153]"byte der adresse  wird automatisch  als"
  67. 1250 [153]"$00 angenommen.  statt lda $00fb heisst"
  68. 1260 [153]"es also 'lda $fb'.  damit die cpu zero-"
  69. 1270 [153]"page und absolute befehle unterscheiden"
  70. 1280 [153]"kann,  muessen die befehlscodes natuer-"
  71. 1290 [153]"lich unterschiedlich sein."
  72. 1310 i[178]7:[141]5000:[139]fl[167]1000
  73. 1400 [153]"loaddurch diesen kunstgriff  sind zeropage-"
  74. 1410 [153]"befehle 2-byte-befehle, sparen also ge-"
  75. 1420 [153]"genueber den absolute-befehlen ein byte"
  76. 1430 [153]"und somit speicherplatz. zudem sind sie"
  77. 1440 [153]"schneller. nachteil: auf der null-seite"
  78. 1450 [153]"liegen die adressen $0000 - $00ff,  das"
  79. 1460 [153]"sind also nur 256 speicher.  mit diesen"
  80. 1470 [153]"muss der programmierer auskommen."
  81. 1510 i[178]8:[141]5000:[139]fl[167]1200
  82. 1600 [153]"load";o$:[153]"1.2.3.5. wait";o$;o$;o$
  83. 1605 [153]"absolute indexed with x-";a$;"wait"
  84. 1610 [153]"befehlen mit dieser ";a$;"  folgt"
  85. 1620 [153]"eine  2-byte-adresse.  die cpu  erhoeht"
  86. 1630 [153]"diese adresse um den inhalt des xr. der"
  87. 1640 [153]"befehl  wird dann  ausgefuehrt  mit dem"
  88. 1650 [153]"byte, das sich in der speicherzelle be-"
  89. 1660 [153]"findet,  deren adresse sich durch diese"
  90. 1670 [153]"addition ergab.  der inhalt des xrclose hat"
  91. 1680 [153]"also  die funktion  eines index.  daher"
  92. 1690 [153]"der name 'index-register'."
  93. 1710 i[178]9:[141]5000:[139]fl[167]1400
  94. 1800 [153]"loadwir schreiben den befehl folgenderweise"
  95. 1810 [153]"'lda $0123,x'."
  96. 1820 [153]b$;" das xr habe  den inhalt $a1.":[153]u$
  97. 1830 [153]"dann bewirkt der befehl  'lda $ff00,x',"
  98. 1840 [153]"dass der inhalt  des speichers $ffa1 in"
  99. 1850 [153]"den ac geladen wird.   durch den befehl"
  100. 1860 [153]"'lda $03ff,x' wird der inhalt des spei-"
  101. 1870 [153]"chers $04a0 (= $03ff + $a1 !) in den ac"
  102. 1880 [153]"geladen."
  103. 1910 i[178]10:[141]5000:[139]fl[167]1600
  104. 2000 [153]"loadindizierte befehle  sind sehr maechtige"
  105. 2010 [153]"befehle. baut man sie in schleifen ein,"
  106. 2020 [153]"in denen bei jedem durchlauf das index-"
  107. 2030 [153]"register um 1 erhoeht wird, so kann man"
  108. 2040 [153]"mit  sehr  einfachen  programmschleifen"
  109. 2050 [153]"weite speicherbereiche bearbeiten (z.b."
  110. 2060 [153]"nach einem bestimmten byte durchsuchen)"
  111. 2110 i[178]11:[141]5000:[139]fl[167]1800
  112. 2200 [153]"load";o$:[153]"1.2.3.6. wait";o$;o$;o$
  113. 2205 [153]"absolute indexed with y-";a$;"wait"
  114. 2210 [153]"hier wird zur indizierung das yr heran-"
  115. 2220 [153]"gezogen. ansonsten gilt das bei der in-"
  116. 2230 [153]"dizierung mit dem xr gesagte."
  117. 2310 i[178]12:[141]5000:[139]fl[167]2000
  118. 2400 [153]"load";o$:[153]"1.2.3.7. wait";o$;o$;o$
  119. 2405 [153]"zeropage indexed with x-";a$;"wait"
  120. 2410 [153]"anstelle einer  absolute-adresse  folgt"
  121. 2420 [153]"dem befehlsbyte  eine zeropage-adresse."
  122. 2430 [153]"diese wird um den inhalt des xr erhoeht"
  123. 2450 [153]o$:[153]"1.2.3.8. wait";o$;o$;o$
  124. 2455 [153]"zeropage indexed with y-";a$;"wait"
  125. 2460 [153]"hier wird zur indizierung das yr heran-"
  126. 2470 [153]"gezogen. ansonsten gilt das obengesagte"
  127. 2510 i[178]13:[141]5000:[139]fl[167]2200
  128. 2600 [153]"loadaufgaben:":[153]u$
  129. 2610 [153]"was versteht man unter"
  130. 2620 [153]"1. implied-";a$
  131. 2630 [153]"2. immediate-";a$
  132. 2640 [153]"3. absolute-";a$
  133. 2650 [153]"4. zeropage-";a$
  134. 2660 [153]"5. absolute indexed-";a$;" ?"
  135. 2670 [153]"6. welche laengen haben befehle mit den"
  136. 2680 [153]"   bei 1-5 aufgefuehrten ";a$;"en"
  137. 2690 [153]"7. welche vorteile bietet die zeropage-":[153]"   ";a$;" ?"
  138. 2700 [153]"8. und welchen nachteil hat sie ?"
  139. 2710 i[178]14:[141]5000:[139]fl[167]2400
  140. 2800 [153]"loadwas bewirken die befehle   (das xr habe":[153]"den inhalt $60):"
  141. 2820 [153]" 9. lda # $20":[153]"10. lda $20":[153]"11. lda $0120"
  142. 2830 [153]"12. lda $0120,x"
  143. 2840 [153]"13. lda $20,x"
  144. 2910 i[178]15:[141]5000:[139]fl[167]2600
  145. 3000 [153]"loadwas bewirken die befehle   (das xr habe"
  146. 3005 [153]"nun den inhalt $00):"
  147. 3020 [153]"14. lda $20":[153]"15. lda $0020":[153]"16. lda $0020,x"
  148. 3030 [153]"17. lda $20,x"
  149. 3040 [153]"18. lda # $20"
  150. 3050 [153]"  - seite 16 -  <+> ontotototocmdcmdcmdcmdendewait  <-> von vorne";
  151. 3060 [141]5020:[145]fl[137]0:[153]"load":[128]:[138]
  152. 5000 [143] umblaettern
  153. 5010 [153]"  - seite";i;"-  <+> weiter  <-> zurueck";
  154. 5020 [129]i[178]0[164]11:[161]x$:[130]
  155. 5030 [161]x$:[139]x$[178]""[167]5030
  156. 5040 [139]x$[178]"+"[167]fl[178]0:[142]
  157. 5050 [139]x$[178]"-"[167]fl[178]1:[142]
  158. 5060 [137]5030
  159. 5100 [153][163]l)a$:[153][163]l)"(NULL)";b$;"(NULL)":[153][163]l)c$:[142]
  160.